package web.fabrimind.mwm.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import web.fabrimind.common.annotation.Excel;
import web.fabrimind.common.core.domain.BaseEntity;

/**
 * 物料出库对象 material_outbound
 * 
 * @author ruoyi
 * @date 2025-03-26
 */
public class MaterialOutbound extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 出库ID */
    private Long outboundId;

    /** 出库单号 */
    @Excel(name = "出库单号")
    private String outboundCode;

    /** 物料ID */
    @Excel(name = "物料ID")
    private Long materialId;

    /** 仓库ID */
    @Excel(name = "仓库ID")
    private Long warehouseId;

    /** 库位ID */
    @Excel(name = "库位ID")
    private Long locationId;

    /** 批次ID */
    @Excel(name = "批次ID")
    private Long batchId;

    /** 出库数量 */
    @Excel(name = "出库数量")
    private BigDecimal quantity;

    /** 出库类型 */
    @Excel(name = "出库类型")
    private String outboundType;

    /** 目标单号 */
    @Excel(name = "目标单号")
    private String targetOrder;

    /** 出库时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出库时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date outboundTime;

    /** 经办人ID */
    private Long handlerId;

    /** 状态（0待出库 1已出库 2已取消） */
    @Excel(name = "状态", readConverterExp = "0=待出库,1=已出库,2=已取消")
    private String status;

    public void setOutboundId(Long outboundId) 
    {
        this.outboundId = outboundId;
    }

    public Long getOutboundId() 
    {
        return outboundId;
    }
    public void setOutboundCode(String outboundCode) 
    {
        this.outboundCode = outboundCode;
    }

    public String getOutboundCode() 
    {
        return outboundCode;
    }
    public void setMaterialId(Long materialId) 
    {
        this.materialId = materialId;
    }

    public Long getMaterialId() 
    {
        return materialId;
    }
    public void setWarehouseId(Long warehouseId) 
    {
        this.warehouseId = warehouseId;
    }

    public Long getWarehouseId() 
    {
        return warehouseId;
    }
    public void setLocationId(Long locationId) 
    {
        this.locationId = locationId;
    }

    public Long getLocationId() 
    {
        return locationId;
    }
    public void setBatchId(Long batchId) 
    {
        this.batchId = batchId;
    }

    public Long getBatchId() 
    {
        return batchId;
    }
    public void setQuantity(BigDecimal quantity) 
    {
        this.quantity = quantity;
    }

    public BigDecimal getQuantity() 
    {
        return quantity;
    }
    public void setOutboundType(String outboundType) 
    {
        this.outboundType = outboundType;
    }

    public String getOutboundType() 
    {
        return outboundType;
    }
    public void setTargetOrder(String targetOrder) 
    {
        this.targetOrder = targetOrder;
    }

    public String getTargetOrder() 
    {
        return targetOrder;
    }
    public void setOutboundTime(Date outboundTime) 
    {
        this.outboundTime = outboundTime;
    }

    public Date getOutboundTime() 
    {
        return outboundTime;
    }
    public void setHandlerId(Long handlerId) 
    {
        this.handlerId = handlerId;
    }

    public Long getHandlerId() 
    {
        return handlerId;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("outboundId", getOutboundId())
            .append("outboundCode", getOutboundCode())
            .append("materialId", getMaterialId())
            .append("warehouseId", getWarehouseId())
            .append("locationId", getLocationId())
            .append("batchId", getBatchId())
            .append("quantity", getQuantity())
            .append("outboundType", getOutboundType())
            .append("targetOrder", getTargetOrder())
            .append("outboundTime", getOutboundTime())
            .append("handlerId", getHandlerId())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
